package com.kingyun.gpsinspection.purificationservice.dao.mapper.jsm;


import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.EntityPro;
import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.EntityTypeProperty;

import java.util.List;
import java.util.Map;

/**
 * 实体类型特性值-属性
 */
public interface EntityTypePropertyMapper {

    /**
     *
     * @param devicePropertyId,实体特性值唯一标识
     * @return
     */
    int deleteByPrimaryKey(String devicePropertyId);
    /**
     * @param propertyIds 批量删除
     * @return
     */
    int deleteByDevicePropertyIds(Map propertyIds);

    /**
     * @param record 生产生产实体类型特性值-插入
     * @return
     */
    int insert(EntityTypeProperty record);
    /**
     * @param record 生产生产实体类型特性值-插入
     * @return
     */
    int insertSelective(EntityTypeProperty record);
    /**
     * @param devicePropertyId 根据生产实体ID
     * @return
     */
    EntityTypeProperty selectByPrimaryKey(String devicePropertyId);
    /**
     * @param record 根据生产实体特性值-修改
     * @return
     */
    int updateByPrimaryKeySelective(EntityTypeProperty record);
    /**
     * @param record 根据生产实体特性值-修改
     * @return
     */
    int updateByPrimaryKey(EntityTypeProperty record);

    /**
     * @param entityTypeProperty  查询分页数量
     */
    List<EntityTypeProperty> queryTableList(EntityTypeProperty entityTypeProperty);

    /**
     * @param entityTypeId
     * @return 根据生产生产实体类型ID查询特性值
     */
    List<EntityTypeProperty> outQueryList(String entityTypeId);

    /**
     * @Author 卢曼成
     * @Description 批量插入
     * @Date 2017/2/21 16:48
     */
    int insertList(List<EntityTypeProperty> list);

    /**
     * @Author 卢曼成
     * @Description 批量逻辑删除
     * @Date 2017/2/21 17:10
     */
    int deleteList(List<EntityTypeProperty> list);

    /**
     * @Author 卢曼成
     * @Description 根据EntityId查询所有信息
     * @Date 2017/2/21 17:03
     */
    List<EntityTypeProperty> selectByParentKey(EntityTypeProperty param);

    /**
     * @Author 卢曼成
     * @Description 根据父级ID删除
     * @Date 2017/2/22 11:00
     */
    int deleteParentKey(EntityTypeProperty param);


    /**
     * 得到数据项关联的特性
     * @param entityPro
     * @return
     */
    List<EntityPro> queryEntityProOfDataItemList(EntityPro entityPro);

    /**
     *得到数据项关联的数量
     * @param entityPro
     * @return
     */
    Integer queryEntityProOfDataItemCount(EntityPro entityPro);


    /**
     * 得到还没有被场站或者井站绑定的实体特性
     * @param entityPro
     * @return
     */
    List<EntityTypeProperty> getEntityTypePropertyWithoutOrgBindList(EntityPro entityPro);


    /**
     * 得到还没有被场站或者井站绑定的实体特性数量
     * @param entityPro
     * @return
     */
    int getEntityTypePropertyWithoutOrgBindCount(EntityPro entityPro);

}